﻿using System;

namespace SharpSqlAnalyzer.nodes
{
	// Token: 0x02000356 RID: 854
	public class TTableHint : TParseTreeNode
	{
		// Token: 0x17000789 RID: 1929
		// (get) Token: 0x0600238D RID: 9101 RVA: 0x0033783E File Offset: 0x00335A3E
		// (set) Token: 0x0600238C RID: 9100 RVA: 0x00337835 File Offset: 0x00335A35
		public virtual TObjectName Hint
		{
			get
			{
				return this.hint;
			}
			set
			{
				this.hint = value;
			}
		}

		// Token: 0x1700078A RID: 1930
		// (set) Token: 0x0600238E RID: 9102 RVA: 0x00337846 File Offset: 0x00335A46
		public virtual TTable OwnerTable
		{
			set
			{
				this.ownerTable = value;
			}
		}

		// Token: 0x1700078B RID: 1931
		// (get) Token: 0x0600238F RID: 9103 RVA: 0x0033784F File Offset: 0x00335A4F
		// (set) Token: 0x06002390 RID: 9104 RVA: 0x00337857 File Offset: 0x00335A57
		public virtual TConstant HintValue
		{
			get
			{
				return this.hintValue;
			}
			set
			{
				this.hintValue = value;
			}
		}

		// Token: 0x1700078C RID: 1932
		// (get) Token: 0x06002391 RID: 9105 RVA: 0x00337860 File Offset: 0x00335A60
		// (set) Token: 0x06002392 RID: 9106 RVA: 0x00337868 File Offset: 0x00335A68
		public virtual TExpressionList ExprList
		{
			get
			{
				return this.exprList;
			}
			set
			{
				this.exprList = value;
			}
		}

		// Token: 0x1700078D RID: 1933
		// (get) Token: 0x06002393 RID: 9107 RVA: 0x00337871 File Offset: 0x00335A71
		// (set) Token: 0x06002394 RID: 9108 RVA: 0x00337879 File Offset: 0x00335A79
		public virtual bool Index
		{
			get
			{
				return this.isIndex;
			}
			set
			{
				this.isIndex = value;
			}
		}

		// Token: 0x06002395 RID: 9109 RVA: 0x00337884 File Offset: 0x00335A84
		public override void init(object arg1)
		{
			if (arg1 is TObjectName)
			{
				this.hint = (TObjectName)arg1;
				return;
			}
			if (arg1 is TExpressionList)
			{
				this.exprList = (TExpressionList)arg1;
				this.isIndex = true;
				return;
			}
			if (arg1 is TConstant)
			{
				this.hintValue = (TConstant)arg1;
			}
		}

		// Token: 0x06002396 RID: 9110 RVA: 0x003378D6 File Offset: 0x00335AD6
		public override void doParse(TCustomSqlStatement psql, ESqlClause plocation)
		{
			if (this.hint != null)
			{
				this.hint.Location = plocation;
				this.hint.SourceTable = this.ownerTable;
				return;
			}
			if (this.exprList != null)
			{
				this.exprList.doParse(psql, plocation);
			}
		}

		// Token: 0x06002397 RID: 9111 RVA: 0x00337913 File Offset: 0x00335B13
		public override void accept(TParseTreeVisitor v)
		{
			v.preVisit(this);
			v.postVisit(this);
		}

		// Token: 0x06002398 RID: 9112 RVA: 0x00337923 File Offset: 0x00335B23
		public override void acceptChildren(TParseTreeVisitor v)
		{
			v.preVisit(this);
			v.postVisit(this);
		}

		// Token: 0x04001BD2 RID: 7122
		private TObjectName hint;

		// Token: 0x04001BD3 RID: 7123
		private TExpressionList exprList;

		// Token: 0x04001BD4 RID: 7124
		private bool isIndex;

		// Token: 0x04001BD5 RID: 7125
		private TConstant hintValue;

		// Token: 0x04001BD6 RID: 7126
		private TTable ownerTable;
	}
}
